linux下运行程序提示error while loading shared libraries,找不到.so – 走着的博客 |
您所在的位置:网站首页 › linux 运行c › linux下运行程序提示error while loading shared libraries,找不到.so – 走着的博客 |
1,事情经过
我在一个单独的文件夹内编译一个main.c文件 gcc main.c -o ecrtexe -I/opt/etherlab/include -L/opt/etherlab/lib -lethercat可以编译成功,但是当我运行时,如下 sudo ./main ./main: error while loading shared libraries: libethercat.so.1: cannot open shared object file: No such file or directory告诉我找不到so库 原因是我的libethercat.so.1库不在Linux系统的默认搜索库位置。 2,解决办法 sudo gedit /etc/ld.so.conf添加如下,并保存: include /etc/ld.so.conf.d/*.conf /opt/etherlab/lib其中/opt/etherlab/lib就是我自己的库所在的位置, 然后运行如下命令,让我们的添加生效,使所有的库文件都被缓存到文件/etc/ld.so.cache中。 sudo ldconfig然后就可以正常编译了。 3,后话 其实,对于由普通用户自己编译生成的.so库文件,比较好的做法是: 将这些.so库文件的路径,用export指令加入到~/.bash_profile中的LD_LIBRARY_PATH变量中。LD_LIBRARY_PATH是程序运行需要链接.so库时会去查找的一个目录;~/.bash_profile是登陆或打开shell时会读取的文件;这样,每次用户登录时,都会把这些.so库文件的路径写入LD_LIBRARY_PATH,这样就可以正常地使用这些.so库文件了。 声明: 本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 走着的博客 本文地址: linux下运行程序提示error while loading shared libraries,找不到.so |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |